package com.sky.controller.user;

import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.sky.constant.JwtClaimsConstant;
import com.sky.dto.UserLoginDTO;
import com.sky.entity.User;
import com.sky.properties.JwtProperties;
import com.sky.result.Result;
import com.sky.service.UserService;
import com.sky.utils.JwtUtil;
import com.sky.vo.UserLoginVO;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;

@RestController
@RequestMapping("user/user")
@Api(tags="客户端用户相关接口")
@Slf4j
public class UserController {
	
	@Autowired
    private UserService userService;
    @Autowired
    private JwtProperties jwtProperties;
	
	@PostMapping("/login")
	@ApiOperation("登录接口")
	public Result<UserLoginVO> Login(@RequestBody UserLoginDTO userlogindto)
	{
		//记录日志
		log.info("登录接口的参数：{}",userlogindto.getCode());
		//调用service获取类型为VO的返回
		User user = userService.wxLogin(userlogindto);
		//为微信用户生成jwt令牌
		Map<String,Object> claims = new HashMap<>();
		claims.put(JwtClaimsConstant.USER_ID,user.getId());
        String token = JwtUtil.createJWT(jwtProperties.getUserSecretKey(), jwtProperties.getUserTtl(), claims);
        UserLoginVO userLoginVO = UserLoginVO.builder()
        		.id(user.getId())
        		.openid(user.getOpenid())
        		.token(token)
        		.build();
		return Result.success(userLoginVO);
	}
}
